package ar.uba.is2.ec.scmanager;

import java.util.Date;

import org.apache.log4j.Logger;

import ar.uba.is2.common.Const;
import ar.uba.is2.common.mensaje.Mensaje;
import ar.uba.is2.common.mensaje.TipoMensaje;
import ar.uba.is2.common.mensaje.contenido.ContenidoSuscripcionDato;
import ar.uba.is2.common.mensaje.contenido.Identificador;
import ar.uba.is2.ec.config.Contexto;

public class SuscriptorDeDatosExternos {

	public static final SuscriptorDeDatosExternos instance = new SuscriptorDeDatosExternos();
	
	private static final Logger logger = Logger.getLogger(SuscriptorDeDatosExternos.class);
	
	private SuscriptorDeDatosExternos(){}
	
	public void suscribirADatos(Identificador datoExterno) {
		
		logger.info(String.format("Suscribiendo %s a dato %s", Contexto.instance.getConfiguracionGeneralEC().getComponenteEc().getNombre(), datoExterno));
		
		Mensaje mensaje = new Mensaje();
		
		mensaje.setOrigen(Contexto.instance.getConfiguracionGeneralEC().getComponenteEc());
		mensaje.setDestino(Const.COMPONENTE_SERVIDOR_CENTRAL);
		mensaje.setFechaCreacion(new Date());
		mensaje.setTipoMensaje(TipoMensaje.SUSCRIBIRSE_A_DATO);
		
		ContenidoSuscripcionDato suscripcion = new ContenidoSuscripcionDato();
		suscripcion.setIdentificador(datoExterno);
		
		mensaje.setContenido(suscripcion);
		
		Contexto.instance.getProtocoloSC().enviarMensaje(mensaje);
	}
}
